Serverless安装第三方package并构建layer
前言
前面介绍的都没有进行额外的 package 安装的过程,所以本章就重点是 如何在 serverless 中安装第三方的 packag 和 如何去构建 layer 使得 package 可以复用。
下面是后续所有例子需求:
- 安装 emoji package,且运行
安装方式:package 安装在本地
1 | s init start-fc3-python -d demo1 |
emoji package 就会安装在 local 的 code 文件夹中
修改 code/index.py
1 | # @code/index.py |
部署代码
1 | 本地测试 |
当然部署也是可以上传代码的方式,如下图,其效果是一样的。

结果:


结果满足预期,但是他会把 emoji package 和 index.py 一起上传了。所以从代码大小中得知,整体会比较大。
安装方式:构建 layer
1 | s init start-fc3-python -d demo2 |
修改 code/index.py
1 | # @code/index.py |
关键代码来了,构建 layer,并且上传 layer。
1 | s build --publish-layer |
构建成功后,提示说在 s.yaml 中添加上 environmentVariables 和 layers 节点。
💡 构建 layer 的意思就是把 requirements package 都构建一层 image layer 且上传到云端,后续的代码就是基于这层,不用另外的安装代码。如果有其他的项目想复用这些 package,直接改 s.yaml 的 layer 节点就可以了。
⚠️ 记得要把 requirements.txt 的文件要放在 和 index.py 的同级目录下。
所以往 s.yaml 里面写入上述的信息。
1 | props: |
部署代码
1 | 本地测试 |
****
结果:

因为不会上传 emoji package,代码明显是小了很多。
总结
- serverless 就是 业务 和 trigger 隔离开来,本文章例子中都是完成 业务,没有 trigger;只要后续补充上 trigger,这个业务就可以串通了。
- 部署方式,优先是构建 layer,后上传代码,因为 layer 可以复用,且减少项目的代码。
- 如果开发/本地测试/部署,可以遵循下面的方法:
1 | 初始化 |
资料
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.
